package com.computer.network.service;

import com.computer.network.po.SysRange;
import com.computer.network.po.SysRole;
import com.computer.network.po.SysUser;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 接口级-权限控制service
 *
 * @Author cgs
 * @Date 2022/8/26 10:45
 */

public interface AuthorityService {
    /**
     * 角色增删改查 (直接操作角色表，删查会涉及相应角色权限表，角色用户表。单表留作单独模块处理)
     * 查询为查询当前角色的所有权限
     */
    void addRole(SysRole sysRole);

    void removeRole(SysRole sysRole);

    void updateRole(SysRole sysRole);

    List<String> selectRole(SysRole sysRole);

    /**
     * 用户增删查改（操作用户表，增改查需要涉及到用户权限关联表）
     * 查询当前用户下所有角色-所有权限
     */
    boolean addUser(SysUser sysUser);

    boolean removeUser(SysUser sysUser);

    boolean updateUser(SysUser sysUser);

    List<String> selectUser(SysUser sysUser);

    /**
     * 权限增删查（操作权限表，更改数据库表成功后需更改redis表）
     */
    boolean addRange(SysRange sysRange);

    boolean removeRange(SysRange sysRange);

    /**
     * @return 所有的权限数据
     */
    List<SysRange> selectRange();


    /**
     * 动态维护一个redis表，（权限表改变时，需更改redis表）,K 角色id。V Hashmap:(K:权限 V：角色id)
     *
     * @param K authority+版本号
     */
    void redisTable(String K);
}
